package com.hb.A_基础.B_高阶函数和lambda

/**
 * Kotlin存在一种特殊的语法，通过两个冒号来实现对于某个类的方法进行引用.
 * 以上面的代码为例，假如我们有一个CountryTest类的对象实例countryTest，
 * 如果要引用他的 isBigEuropeanCountry方法，就可以这么写：countryTest::isBigEuropeanCountry
 */
fun main() {
    val getBook = ::Book

    println(getBook("tom").name)
    Book::name
    /**
     * 以上创建的 Book::name的类型为(Book)->String。当我们在对Book类对象的集合
     * 应用一些函数式的API的时候，这样会显得格外有用
     */
    val bookNames= listOf(
        Book("java"),
        Book("hadoop")
    ).map(Book::name)
  println(bookNames)

}
/**
 * 定义一个类的构造方法的引用变量
 *
 * */
class Book(val name:String){
    fun test(){
        println("test...")
    }
}